import {Module, MiddlewareConsumer, RequestMethod} from '@nestjs/common';
import configuration from './config';
import {ConfigModule} from "@nestjs/config";
import {ThrottlerModule, ThrottlerGuard} from '@nestjs/throttler';
import {APP_GUARD} from '@nestjs/core';
import {TestModule} from './module/test/test.module';
import {AuthModule} from './module/auth/auth.module';
import { CommonModule } from './module/common/common.module';


@Module({
    imports: [
        //配置模块
        ConfigModule.forRoot({
            cache: true,
            load: [configuration],
            isGlobal: true,
        }),
        // 配置限流模块
        ThrottlerModule.forRoot([
            {
                name: 'short', // 短期限制（例如：1分钟内最多100次请求）
                ttl: 60000, // 时间窗口（毫秒）：60000ms = 1分钟
                limit: 100, // 时间窗口内的最大请求数
            },
            {
                name: 'long', // 长期限制（例如：1小时内最多1000次请求）
                ttl: 3600000, // 3600000ms = 1小时
                limit: 1000,
            },
        ]),
        TestModule,
        AuthModule,
        CommonModule,
    ],
    providers: [
        // 全局启用节流守卫（所有路由默认受限制）
        {
            provide: APP_GUARD,
            useClass: ThrottlerGuard,
        },
    ],
})
export class AppModule {
}
